// 蛇
export default class Snake{
  constructor() {
    this.direction = 'right';
    this.data = [
      { x: 6, y: 2, color: 'green' },
      { x: 5, y: 2, color: 'white' },
      { x: 4, y: 2, color: 'white' },
      { x: 3, y: 2, color: 'white' },
      { x: 2, y: 2, color: 'white' }
    ];
  }

  // 移动
  move() {
    let i = this.data.length - 1
    this.lastData = {
      x: this.data[i].x,
      y: this.data[i].y,
      color: this.data[i].color
    }
    /*
    * 让后边每一格走到前一格的位置上
    */
    for (i; i >0; i--){
      this.data[i].x = this.data[i - 1].x;
      this.data[i].y = this.data[i - 1].y;
    }

    switch (this.direction) {
      case 'left':
        this.data[0].x--;
        break;
      case 'right':
        this.data[0].x++;
        break;
      case 'top':
        this.data[0].y--;
        break;
      case 'bottom':
        this.data[0].y++;
        break;
    }
  }

  // 改变方向
  changeDir(dir) {
    // 如果蛇现在左右移动，我们只能让蛇上下移动
    // 如果蛇现在上下移动，我们只能让蛇左右移动
    if (this.direction === 'left' || this.direction === 'right') {
      if (dir === 'left' || dir === 'right') {
        return false; // 不修改方向
      }
    } else {
      if (dir === 'top' || dir === 'bottom') {
        return false;
      }
    }

    this.direction = dir;
  }

  // 吃到食物变大
  eatFood() {
    this.data.push(this.lastData);
  }
}